// 定义基础接口
export interface BaseElement {
  id: string; // 唯一标识
  type: string; // 元素类型
  x: number; // x坐标
  y: number; // y坐标
  width: number; // 宽度
  height: number; // 高度
  selected: boolean; // 选中状态
  zIndex: number; // 层级控制属性
}

// 定义矩形特有接口（继承基础接口）
export interface RectangleElement extends BaseElement {
  type: 'rectangle';
  background: string;
  borderWidth: number;
  borderColor: string;
}

// 圆形元素接口
export interface CircleElement extends BaseElement {
  type: 'circle';
  background: string;
  borderWidth: number;
  borderColor: string;
}

// 三角形元素接口
export interface TriangleElement extends BaseElement {
  type: 'triangle';
  background: string;
  borderWidth: number;
  borderColor: string;
}

// ✨✨ 文本元素接口 (确认 strikethrough 存在) ✨✨
export interface TextElement extends BaseElement {
  type: 'text';
  content: string;
  fontSize: number;
  fontFamily: string;
  color: string;
  background: string;
  bold: boolean;
  italic: boolean;
  underline: boolean;
  strikethrough: boolean; // 👈 必须有这个
  textAlign: 'left' | 'center' | 'right';
}

// 图片元素接口
export interface ImageElement extends BaseElement {
  type: 'image';
  src: string;
  originalWidth: number;
  originalHeight: number;
  initialWidth: number; // 上传到画布时的初始宽度
  initialHeight: number; // 上传到画布时的初始高度
  filter?: string;
  opacity: number;
  borderWidth: number;
  borderColor: string;
}

export interface SelectionBoxState {
  isSelecting: boolean;
  startX: number;
  startY: number;
  currentX: number;
  currentY: number;
}

// 更新联合类型
export type CanvasElement = RectangleElement | CircleElement | TriangleElement | TextElement | ImageElement;